perm filename CIRCUM.PRF[W81,JMC] blob sn#570534 filedate 1981-03-09 generic text, type T, neo UTF8
COMMENT |
  The syntax for this command is:
  CIRCUMSCRIBE NAME < ... <predsym> <predpar> <varlist> ... > IN <vl>;
  The result is to produce an axiom 
  Below is a working example 
  This is now on the system. |

DECLARE INDVAR x;
DECLARE INDCONST a b;
DECLARE PREDCONST isblock 1;
DECLARE PREDPAR P 1;

AXIOM twoblocks:	isblock(a)∧isblock(b);;

CIRCUMSCRIBE newaxiom isblock P x IN twoblocks;

Circumscription has produced the following new axiom:
newaxiom: ((P(a)∧P(b))∧∀x.(P(x)⊃isblock(x)))⊃∀x.(isblock(x)⊃P(x));;

∧I newaxiom[P←λx.(x=a∨x=b)];

1 (((a=a∨a=b)∧(b=a∨b=b))∧∀x.((x=a∨x=b)⊃isblock(x)))⊃∀x.(isblock(x)⊃(x=a∨x=b))  

tauteq 1:#1#2#1 twoblocks;

2 (x=a∨x=b)⊃isblock(x)  

∀i 2 x;

3 ∀x.((x=a∨x=b)⊃isblock(x))  

tauteq 1:#2 1 3;

4 ∀x.(isblock(x)⊃(x=a∨x=b))  

∀e 4 x;

5 isblock(x)⊃(x=a∨x=b)  

tauteq isblock(x)≡(x=a∨x=b) 5 twoblocks;

6 isblock(x)≡(x=a∨x=b)  

∀i 6 x;

7 ∀x.(isblock(x)≡(x=a∨x=b))  

show axioms;

newaxiom: ((P(a)∧P(b))∧∀x.(P(x)⊃isblock(x)))⊃∀x.(isblock(x)⊃P(x))
twoblocks: isblock(a)∧isblock(b)